Принципы ООП: практика
Это полностью практический урок. В нём вас ждёт шесть тренажёрных задач, которые помогут усвоить теорию о принципах ООП. Удачи!
4.
У каждого вида птиц есть особые навыки. Например, попугай может повторить сказанную ему фразу, а пингвины умеют плавать со средней скоростью 11 км/ч.
Для класса
Parrot объявите метод repeat(), который в качестве параметра принимает phrase фразу и возвращает строку Попугай {name} говорит: {phrase}.Для класса
Penguin объявите метод swimming(), который будет возвращать строку: Пингвин {name} плавает со средней скоростью 11 км/ч..Подсказка
Свойства, используемые в методах, вызываются через
self, а параметры, передаваемые в метод, нет.Код
xxxxxxxxxx67
1
23
1
class Bird:2
def __init__(self, name, size):3
self.name = name4
self.size = size5
6
def describe(self, full=False):7
return f'Размер птицы {self.name} — {self.size}.'8
9
10
class Parrot(Bird):11
def __init__(self, name, size, color):12
super().__init__(name, size)13
self.color = color14
15
def describe(self, full=False):16
if full:17
return (f'Попугай {self.name} — заметная птица, '18
f'окрас её перьев — {self.color}, '19
f'а размер — {self.size}. '20
'Интересный факт: попугаи чувствуют ритм, '21
'а вовсе не бездумно двигаются под музыку. '22
'Если сменить композицию, '23
'то и темп движений птицы изменится.')24
return super().describe()25
26
# Добавьте метод repeat().27
28
29
class Penguin(Bird):30
def __init__(self, name, size, genus):31
super().__init__(name, size)32
self.genus = genus33
34
def describe(self, full=False):35
if full:36
return (f'Размер пингвина {self.name} '37
f'из рода {self.genus} — {self.size}. '38
'Интересный факт: однажды группа геологов-разведчиков '39
'похитила пингвинье яйцо, '40
'и их принялась преследовать вся стая, '41
'не пытаясь, впрочем, при этом нападать. '42
'Посовещавшись, похитители вернули птицам яйцо, '43
'и те отстали. ')44
return super().describe()45
46
# Добавьте метод swimming().47
48
49
kesha = Parrot('Ара', 'средний', 'красный')50
kowalski = Penguin('Королевский', 'большой', 'Aptenodytes')51
52
53
print(kesha.repeat('Кеша хороший!'))54
print(kowalski.swimming())